perm filename EXS[TLK,DBL] blob sn#182025 filedate 1975-10-23 generic text, type C, neo UTF8
COMMENT āŠ—   VALID 00002 PAGES
C REC  PAGE   DESCRIPTION
C00001 00001
C00002 00002	The EXS/UP/SPEC/GENL mixup
C00007 ENDMK
CāŠ—;
The EXS/UP/SPEC/GENL mixup

THe problem is that I keep mixing up the up/down idea from the genl/spec
idea. Some typical problems:
	Is COMPOSE-REAR-AND-REAR an EX of a COMPOSE, or is it a SPEC?
	Clearly we want ((COMPOSE a b) Cab) to be considered an example.
	And we want INTERESTING-COMPOSE to be a specialization.
	The trouble is that C-R-A-R is 
		(i) an element in the range of COMPOSE
		(ii) the last element of a (dom-ele,dom-ele,value) triple
		(iii) named in such a way that from it we can deduce the other
			actives involved -- the names of the args to COMPOSE.
		(iv) it is an active, but with violently different D-R

When we create CRAR, we should first incrb  CRAR.IN-RAN-OF, to contain COMPOSE;
probable format would be the particular call on compose generating this Being.

Next, we should realize that CRAR is guaranteed to be Active or Frob or whatever
only because of the Range part of the D-R part of COMPOSE. So we look up the
Range (the last element of the particular DR element from COMPOSE which we used
to generate CROS; perhaps just the first DR element), and see it says ACTIVE.
Then we put this (incrb) onto CRAR.UP.

Part of the trouble is that ACTIVE is in reality just an object, not an op!
SET-INSERT is totally different; we take certain allowable args, execute some
transformations, and come up with a range element. But ACTIVE, OPERATION,
PREDICATE, RELATION, are not really executable any more than "SET-STRUC" is.

We should say that A is a SPEC of B if A.DEFN is of the form (AND...B.DEFN...).
A is an EX of B if A satisfies B.DEFN.

So CRAR  is certainly not a SPEC of COMPOSE, since we don't take two ops and...
But INT-COMPOSE is a SPEC of COMPOSE, since we do all of COMPOSE.DEFN + other things
in addition.
(R R CRAR) is an ex. of COMPOSE. CRAR is not mentioned elsewhere in COMPOSE.
CRAR.IN-RAN-OF contains COMPOSE. 
CRAR is an EX of ACTIVE and of OP, just like COMPOSE is.

ACTIVE is just an EX of an OBJ. 
PREDICATE, OPERATION, RELATION are SPECS of ACTIVE, since they satisfy the
same definition as ACTIVE does, plus addl. constraints.

What then do we mean by ISA?
We really mean, trace along GENL as much as you want, go UP once, and again
along GENL as far as you want.
To trace just along GENL links, one could ask for (GENL OPERATION) and get
(OP ACTIVE OBJ). Genl(CRAR) would probably be blank.

So Active isa Object. THerefore so are its SPEC: OP, PRED, RELN.
Now we should verify that any SPEC of x will satisfy X.DEFN.
But (And ... (And ... ::: (And ... q ...) ::: )) certainly satisfies q.
So we must only be careful at the start to ensure that SPEC/GENL links
really mean "also satisfies the definition of".
Notice that ACTIVE is not ISA ACTIVE, since one is an operation and the other
is an object (if x ISA Active, then x must be an executable thing, not static).
But OBJ ISA OBJ, etc, so this varies.

We must go back through all the code, and see if ISA means what it should,
or if it means GENL, etc.

Also the UP DOWN SPEC GENL links must be firmed up and edited allover.